CSS Gridμ repeat() ν¨μλ₯Ό λ§μ€ν°νμ¬ λμ μ΄κ³ λ°μν λ μ΄μμμ λ§λμΈμ. μ μ°νκ³ μ μμ± μλ μΉ λμμΈμ μν 그리λ νΈλμ ν¨μ¨μ μΌλ‘ μμ±νλ λ°©λ²μ λ°°μ°μΈμ.
CSS Grid νΈλ λ°λ³΅ ν¨μ: λμ νΈλ μμ±
CSS Gridλ μΉ λ μ΄μμμ νλͺ
μ κ°μ Έμ νμ μΆμ’
μ λΆννλ μ μ΄λ ₯κ³Ό μ μ°μ±μ μ 곡ν©λλ€. κ°λ ₯ν κΈ°λ₯ μ€ repeat() ν¨μλ λμ μ΄κ³ λ°μν 그리λ ꡬ쑰λ₯Ό λ§λλ λ° μ€μν λκ΅¬λ‘ λ보μ
λλ€. μ΄ ν¨μλ₯Ό μ¬μ©νλ©΄ 그리λ νΈλμ λ°λ³΅ ν¨ν΄μ ν¨μ¨μ μΌλ‘ μ μνμ¬ CSSλ₯Ό ν¬κ² λ¨μννκ³ λ€μν νλ©΄ ν¬κΈ° λ° μ½ν
μΈ μμ λ μ΄μμμ λ μ μ μμν¬ μ μμ΅λλ€. μ΄ ν¬κ΄μ μΈ κ°μ΄λμμλ repeat() ν¨μμ ꡬ문, μ¬μ© μ¬λ‘ λ° κ³ κΈ κΈ°μ μ μμΈν μ΄ν΄λ³΄κ² μ΅λλ€.
CSS Grid κΈ°λ³Έ μ΄ν΄
repeat() ν¨μλ₯Ό μμΈν μ΄ν΄λ³΄κΈ° μ μ CSS Gridμ κΈ°λ³Έ κ°λ
μ κ°λ΅νκ² μ΄ν΄λ³΄κ² μ΅λλ€. CSS Grid λ μ΄μμμ λ€μμΌλ‘ ꡬμ±λ©λλ€.
- 그리λ 컨ν
μ΄λ(Grid Container): 그리λ λ μ΄μμμ΄ μ μ©λλ λΆλͺ¨ μμ(
display: grid;λλdisplay: inline-grid;). - 그리λ μμ΄ν (Grid Items): 그리λ 컨ν μ΄λμ μ§κ³ μμ μμλ‘, 그리λμ μλμΌλ‘ λ°°μΉλ©λλ€.
- 그리λ νΈλ(Grid Tracks): 그리λλ₯Ό ꡬμ±νλ νκ³Ό μ΄.
- 그리λ λΌμΈ(Grid Lines): 그리λ νΈλμ κ²½κ³λ₯Ό μ μνλ μν λ° μμ§μ .
- 그리λ μ (Grid Cells): 그리λ νκ³Ό μ΄μ κ΅μ°¨λ‘ νμ±λλ 그리λ λ΄μ κ°λ³ λ¨μ.
- 그리λ μμ(Grid Areas): μ΄λ¦ μ§μ μ΄ κ°λ₯νλ©° 그리λ μμ΄ν μ λ°°μΉνλ λ° μ¬μ©λ μ μλ νλ μ΄μμ 그리λ μ .
grid-template-columns λ° grid-template-rows μμ±μ 그리λ νΈλμ ν¬κΈ°μ μλ₯Ό μ μν©λλ€. μλ₯Ό λ€μ΄:
.grid-container {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: auto auto;
}
μ΄ μ½λλ μΈ κ°μ λμΌν λλΉλ₯Ό κ°μ§ μ΄(μ¬μ© κ°λ₯ν 곡κ°μ λΉμ¨μ λνλ΄λ fr λ¨μλ₯Ό μ¬μ©)κ³Ό μλμΌλ‘ κ²°μ λλ λμ΄λ₯Ό κ°μ§ λ κ°μ νμΌλ‘ ꡬμ±λ 그리λλ₯Ό μμ±ν©λλ€.
repeat() ν¨μ μκ°
repeat() ν¨μλ 그리λ νΈλμ λ°λ³΅ ν¨ν΄μ μ μνλ μ½μ νκΈ°λ²μ
λλ€. μ΄ ν¨μλ λ κ°μ§ μΈμλ₯Ό μ¬μ©ν©λλ€.
- λ°λ³΅ νμ: νΈλ ν¨ν΄μ΄ λ°λ³΅λμ΄μΌ νλ νμμ
λλ€. κ³ μ λ μ«μμ΄κ±°λ
auto-fitλ°auto-fillκ³Ό κ°μ ν€μλκ° λ μ μμ΅λλ€. - νΈλ λͺ©λ‘: μ ν¨ν λͺ¨λ CSS λ¨μ(μ:
px,em,fr,auto)λ₯Ό ν¬ν¨ν μ μλ 곡백μΌλ‘ ꡬλΆλ νΈλ ν¬κΈ° λͺ©λ‘μ λλ€.
κΈ°λ³Έ ꡬ문μ λ€μκ³Ό κ°μ΅λλ€.
repeat( <number-of-repetitions> , <track-list> );
μλ₯Ό λ€μ΄, λ€μ μ½λλ κ° μ΄μ΄ 100px λλΉμΈ λ€ κ°μ μ΄λ‘ ꡬμ±λ 그리λλ₯Ό μμ±ν©λλ€.
.grid-container {
display: grid;
grid-template-columns: repeat(4, 100px);
}
μ΄λ λ€μ μ½λμ λμΌν©λλ€.
.grid-container {
display: grid;
grid-template-columns: 100px 100px 100px 100px;
}
repeat() ν¨μλ λ 볡μ‘ν ν¨ν΄μ μ²λ¦¬νκ±°λ νλ©΄ ν¬κΈ° λλ μ½ν
μΈ μ λ°λΌ νΈλ μλ₯Ό λμ μΌλ‘ μ‘°μ ν΄μΌ ν λ νΉν μ μ©ν©λλ€.
repeat() ν¨μ μ¬μ©μ κΈ°λ³Έ μμ
repeat() ν¨μμ λ€μμ±μ μ€λͺ
νκΈ° μν΄ λͺ κ°μ§ κΈ°λ³Έ μμ λ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€.
λμΌν λλΉμ μ΄
νΉμ κ°μμ λμΌν λλΉλ₯Ό κ°μ§ μ΄λ‘ 그리λλ₯Ό μμ±νλ €λ©΄ fr λ¨μλ₯Ό μ¬μ©ν μ μμ΅λλ€.
.grid-container {
display: grid;
grid-template-columns: repeat(3, 1fr);
}
μ΄κ²μ μ¬μ© κ°λ₯ν 곡κ°μ 3λΆμ 1μ μ°¨μ§νλ μΈ κ°μ μ΄μ μμ±ν©λλ€.
κ΅μ°¨νλ μ΄ ν¬κΈ°
μλ‘ λ€λ₯Έ μ΄ ν¬κΈ°λ‘ λ°λ³΅ ν¨ν΄μ μ μν μλ μμ΅λλ€.
.grid-container {
display: grid;
grid-template-columns: repeat(2, 1fr 2fr);
}
μ΄κ²μ λ€ κ°μ μ΄λ‘ ꡬμ±λ 그리λλ₯Ό μμ±ν©λλ€. 1fr 2fr ν¨ν΄μ΄ λ λ² λ°λ³΅λμ΄ κ°κ° 1fr, 2fr, 1fr, 2fr λλΉμ μ΄μ΄ μμ±λ©λλ€.
κ³ μ λ° μ μ°ν μ΄
repeat() ν¨μλ₯Ό μ¬μ©νμ¬ κ³ μ λλΉ μ΄κ³Ό μ μ°ν μ΄μ κ²°ν©ν μ μμ΅λλ€.
.grid-container {
display: grid;
grid-template-columns: 100px repeat(2, 1fr) 100px;
}
μ΄κ²μ λ€ κ°μ μ΄λ‘ ꡬμ±λ 그리λλ₯Ό μμ±ν©λλ€. 첫 λ²μ§Έμ λ§μ§λ§ μ΄μ 100pxλ‘ κ³ μ λκ³ , κ°μ΄λ° λ μ΄μ λ¨μ 곡κ°μ κ· λ±νκ² λλλλ€.
auto-fit λ° auto-fillμ μ¬μ©ν κ³ κΈ κΈ°μ
repeat() ν¨μμ μ§μ ν νμ auto-fit λ° auto-fill ν€μλλ₯Ό μ¬μ©νμ¬ λμ μ΄κ³ λ°μν λ μ΄μμμ μμ±νλ λ₯λ ₯μ μμ΅λλ€. μ΄ ν€μλλ₯Ό μ¬μ©νλ©΄ 그리λκ° μ¬μ© κ°λ₯ν 곡κ°κ³Ό 그리λ νλͺ©μ ν¬κΈ°μ λ°λΌ νΈλ μλ₯Ό μλμΌλ‘ μ‘°μ ν μ μμ΅λλ€.
auto-fit λ° auto-fill μ΄ν΄νκΈ°
auto-fitκ³Ό auto-fillμ λͺ¨λ κ°λ₯ν ν λ§μ νΈλμΌλ‘ μ¬μ© κ°λ₯ν 곡κ°μ μ±μ°λ κ²μ λͺ©νλ‘ ν©λλ€. μ£Όμ μ°¨μ΄μ μ λΉ νΈλμ μ²λ¦¬νλ λ°©μμ μμ΅λλ€.
auto-fill: μ΅λν λ§μ μ΄λ‘ νμ μ±μλλ€. 그리λ νλͺ©μ΄ μΆ©λΆνμ§ μμ λΉ μ΄μ΄ μλ κ²½μ° κ³΅κ°μ κ·Έλλ‘ λ‘λλ€. λΈλΌμ°μ λ λμ λΉ μ΄μ μΆκ°ν μ μμ΅λλ€. μ΄λ¬ν λΉ νΈλμ μ¬μ ν 곡κ°μ μ°¨μ§ν©λλ€.auto-fit:auto-fillκ³Ό λμΌνκ² μλνμ§λ§, λͺ¨λ 그리λ νλͺ©μ΄ λ°°μΉλλ©΄ λΉ νΈλμ μΆμν©λλ€. μ΄λ λλ¨Έμ§ νΈλμ΄ μ¬μ© κ°λ₯ν 곡κ°μ μ±μ°λλ‘ νμ₯λ¨μ μλ―Έν©λλ€.
λ³Έμ§μ μΌλ‘ auto-fitμ λΉ νΈλμ 0pxλ‘ μΆμνλ λ°λ©΄, auto-fillμ λΉ νΈλμ΄λλΌλ μ μλ νΈλ ν¬κΈ°λ₯Ό μ μ§ν©λλ€. μ€μ μ μ©μ νΉμ λ μ΄μμ μꡬ μ¬νμ λ°λΌ λ¬λΌμ§λλ€.
λ°μν μ΄μ auto-fit μ¬μ©νκΈ°
auto-fit ν€μλλ λ€μν νλ©΄ ν¬κΈ°μ μ μνλ λ°μν μ΄ λ μ΄μμμ λ§λλ λ° μ΄μμ μ
λλ€. λ€μ μμ λ₯Ό μ΄ν΄λ³΄μΈμ.
.grid-container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
grid-gap: 20px;
}
μ΄ μ½λλ μ¬μ© κ°λ₯ν 곡κ°μ λ°λΌ μ΄ μλ₯Ό μλμΌλ‘ μ‘°μ νλ 그리λλ₯Ό μμ±ν©λλ€. μλ λ°©μμ λ€μκ³Ό κ°μ΅λλ€.
auto-fit: 그리λκ° κ°λ₯ν ν λ§μ μ΄μ λ§μΆλλ‘ μ§μν©λλ€.minmax(250px, 1fr): κ° μ΄μ μ΅μ λ° μ΅λ ν¬κΈ°λ₯Ό μ μν©λλ€. κ° μ΄μ μ΅μ 250px λλΉκ° λμ§λ§, μ¬μ© κ°λ₯ν 곡κ°μ μ±μ°κΈ° μν΄ νμ₯λ μ μμ΅λλ€(μ΅λ 1fr).grid-gap: 20px: 그리λ νλͺ© μ¬μ΄μ 20pxμ κ°κ²©μ μΆκ°ν©λλ€.
νλ©΄ ν¬κΈ°κ° λ³κ²½λλ©΄ 그리λλ κ° μ΄μ΄ μ΅μ 250px λλΉλ₯Ό μ μ§νλλ‘ μ΄ μλ₯Ό μλμΌλ‘ μ‘°μ ν©λλ€. νλ©΄μ΄ μΆ©λΆν λμΌλ©΄ μ΄μ΄ νμ₯λμ΄ μ¬μ© κ°λ₯ν 곡κ°μ μ±μλλ€. νλ©΄μ΄ λ무 μ’μ ν μ΄μ‘°μ°¨ λ§μΆ μ μμΌλ©΄ μ½ν μΈ κ° λμΉ©λλ€.
μμ μλ리μ€: μ΄λ―Έμ§ κ°€λ¬λ¦¬λ₯Ό μμν΄ λ³΄μΈμ. μ΄ μ κ·Ό λ°©μμ μ¬μ©νλ©΄ κ°€λ¬λ¦¬λ νλΉ νμλλ μ΄λ―Έμ§ μλ₯Ό λ°μμ μΌλ‘ μ‘°μ νμ¬ λ€μν μ₯μΉμμ μ΅μ μ μμ² κ²½νμ μ 곡ν©λλ€.
λμ μ½ν
μΈ μ auto-fill μ¬μ©νκΈ°
auto-fill ν€μλλ λΉ νΈλμ΄ μλλΌλ μΌκ΄λ 그리λ ꡬ쑰λ₯Ό μ μ§νλ €λ κ²½μ°μ μ μ©ν©λλ€. μ΄λ λμ€μ λ λ§μ μ½ν
μΈ λ₯Ό μΆκ°ν κ²μΌλ‘ μμλλ λ μ΄μμμ λ§λ€ λ λμμ΄ λ μ μμ΅λλ€. λ€μμ μμ μ
λλ€.
.grid-container {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
grid-gap: 10px;
}
μ΄ κ²½μ° κ·Έλ¦¬λλ κ°λ₯ν ν λ§μ μ΄μ μμ±νλ©°, κ° μ΄μ μ΅μ λλΉ 200pxλ₯Ό κ°μ§λλ€. λͺ¨λ μ΄μ μ±μΈ 그리λ νλͺ©μ΄ μΆ©λΆνμ§ μμΌλ©΄ λλ¨Έμ§ μ΄μ λΉ μνλ‘ μ μ§λμ΄ μ 체 그리λ ꡬ쑰λ₯Ό μ μ§ν©λλ€. λΉ μνμΌμ§λΌλ μ μλ `minmax` λλΉλ₯Ό κ³μ μ°¨μ§νλ©°, μ΄κ²μ΄ `auto-fit`κ³Ό `auto-fill`μ μ£Όμ μ°¨μ΄μ μ λλ€.
μμ μλ리μ€: κ³ μ λ μμ μ리νμμ μμ ―μ΄ μλ λμ보λλ₯Ό κ³ λ €ν΄ λ³΄μΈμ. auto-fillμ μ¬μ©νλ©΄ μΌλΆ μμ ―μ΄ μΌμμ μΌλ‘ λΉμ΄ μκ±°λ μ¬μ©ν μ μλλΌλ λμ보λκ° μΌκ΄λ λ μ΄μμμ μ μ§νλλ‘ λ³΄μ₯ν©λλ€.
auto-fitκ³Ό auto-fill μ€μμ μ ννκΈ°
auto-fitκ³Ό auto-fill μ€μμ μ ννλ κ²μ νΉμ λμμΈ λͺ©νμ λ°λΌ λ¬λΌμ§λλ€. κ²°μ μ λμμ΄ λλ μμ½μ λ€μκ³Ό κ°μ΅λλ€.
auto-fitμ¬μ© μ: μ¬μ© κ°λ₯ν μ½ν μΈ μ νλ©΄ ν¬κΈ°μ λ°λΌ 그리λκ° μλμΌλ‘ μ΄ μλ₯Ό μ‘°μ νκ³ , λΉ νΈλμ΄ μΆμλκΈ°λ₯Ό μν λ. μ΄λ μ¬μ© κ°λ₯ν 곡κ°μ μ΅λν νμ©νλ €λ λ°μν λ μ΄μμμ μ΄μμ μ λλ€.auto-fillμ¬μ© μ: λΉ νΈλμ΄ μλλΌλ μΌκ΄λ 그리λ ꡬ쑰λ₯Ό μ μ§νλ € ν λ. μ΄λ λμ€μ λ λ§μ μ½ν μΈ λ₯Ό μΆκ°ν κ²μΌλ‘ μμλλ λ μ΄μμμ΄λ μΌλΆ νλͺ©μ΄ λλ½λμλλΌλ μ 체 그리λ λ μ΄μμμ 보쑴νλ €λ κ²½μ°μ μ μ©ν©λλ€.
repeat() ν¨μμ λ€λ₯Έ CSS Grid μμ± κ²°ν©νκΈ°
repeat() ν¨μλ λ€λ₯Έ CSS Grid μμ±κ³Ό κ²°ν©νμ¬ ν¨μ¬ λ μ κ΅ν λ μ΄μμμ λ§λ€ μ μμ΅λλ€. λ€μμ λͺ κ°μ§ μμ
λλ€.
grid-template-areasμ repeat() ν¨κ» μ¬μ©νκΈ°
While the primary use of `repeat()` is within `grid-template-columns` and `grid-template-rows`, its dynamic nature can indirectly influence layouts defined using `grid-template-areas`. For instance, if the number of columns dynamically changes with `repeat(auto-fit, ...)`, the arrangement of items defined in `grid-template-areas` will adapt accordingly.
.grid-container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
grid-template-rows: auto;
grid-template-areas:
"header header header"
"nav main aside"
"footer footer footer";
gap: 10px;
}
.header { grid-area: header; background-color: #eee; }
.nav { grid-area: nav; background-color: #ddd; }
.main { grid-area: main; background-color: #ccc; }
.aside { grid-area: aside; background-color: #bbb; }
.footer { grid-area: footer; background-color: #aaa; }
μ΄ μμ μμ `grid-template-columns`λ νλ©΄ ν¬κΈ°μ λ°λΌ λμ μΌλ‘ μ‘°μ λμ§λ§, `grid-template-areas`μ μν΄ μ μλ κΈ°λ³Έ λ μ΄μμ ꡬ쑰(ν€λ, λ΄λΉκ²μ΄μ , λ©μΈ, μ¬μ΄λ, νΈν°)λ μΌκ΄λκ² μ μ§λ©λλ€. `nav`, `main`, `aside` μμμ μ΄ μκ° λ³κ²½λ¨μ λ°λΌ λλΉλ₯Ό μλμΌλ‘ μ‘°μ ν©λλ€.
μ μ°ν νΈλμ μν΄ repeat() λ΄μμ minmax() μ¬μ©νκΈ°
minmax() ν¨μλ₯Ό μ¬μ©νλ©΄ 그리λ νΈλμ μ΅μ λ° μ΅λ ν¬κΈ°λ₯Ό μ μν μ μμ΅λλ€. μ΄λ μ μ°νκ³ λ°μν λ μ΄μμμ μμ±νκΈ° μν΄ repeat()μ ν¨κ» μ¬μ©ν λ νΉν μ μ©ν©λλ€. μ΄μ μμ μμλ μ΄λ―Έ μ΄λ₯Ό μ¬μ©νμ΅λλ€.
.grid-container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}
μ΄ μ½λλ μ΅μ 200px λλΉμ΄μ§λ§ μ¬μ© κ°λ₯ν 곡κ°μ μ±μ°κΈ° μν΄ νμ₯λ μ μλ μ΄λ‘ 그리λλ₯Ό μμ±ν©λλ€. μ΄λ₯Ό ν΅ν΄ λ μμ νλ©΄μμ μ½ν μΈ κ° κ°λ μ±μ μ μ§νλ©΄μ λ ν° νλ©΄μμλ μ¬μ© κ°λ₯ν 곡κ°μ νμ©ν μ μμ΅λλ€.
repeat()μ λ―Έλμ΄ μΏΌλ¦¬ κ²°ν©νκΈ°
λ―Έλμ΄ μΏΌλ¦¬λ₯Ό μ¬μ©νμ¬ νλ©΄ ν¬κΈ°μ λ°λΌ μ΄ μ λλ νΈλ ν¬κΈ°λ₯Ό μ‘°μ ν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ λ€μν μ₯μΉμ μ΅μ νλ λ μ΄μμμ λ§λ€ μ μμ΅λλ€. μλ₯Ό λ€μ΄:
.grid-container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); /* Default for small screens */
}
@media (min-width: 768px) {
.grid-container {
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); /* Larger screens */
}
}
@media (min-width: 1200px) {
.grid-container {
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); /* Even larger screens */
}
}
μ΄ μ½λλ μμ νλ©΄, μ€κ° νλ©΄, ν° νλ©΄μ λν΄ μλ‘ λ€λ₯Έ μ΄ κ΅¬μ±μ μ μν©λλ€. μμ νλ©΄μμλ μ΄μ΄ μ΅μ 150px λλΉκ° λ©λλ€. μ€κ° νλ©΄μμλ μ΅μ 250px λλΉκ° λκ³ , ν° νλ©΄μμλ μ΅μ 300px λλΉκ° λ©λλ€.
μ€μ μ¬μ© μ¬λ‘ λ° μμ
repeat() ν¨μλ λ€μν λ μ΄μμμ λ§λλ κ°λ ₯ν λꡬμ
λλ€. λ€μμ λͺ κ°μ§ μ€μ μ¬μ© μ¬λ‘ λ° μμμ
λλ€.
μ΄λ―Έμ§ κ°€λ¬λ¦¬
μμ μ€λͺ
νλ―μ΄, μ΄λ―Έμ§ κ°€λ¬λ¦¬λ repeat(auto-fit, minmax(...)) μ¬μ©μ ν΅ν΄ ν° μ΄μ μ μ»μ μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ κ°€λ¬λ¦¬λ νλΉ νμλλ μ΄λ―Έμ§ μλ₯Ό λ°μμ μΌλ‘ μ‘°μ νμ¬ λ€μν μ₯μΉμμ μΌκ΄λκ³ μκ°μ μΌλ‘ λ§€λ ₯μ μΈ νλ μ ν
μ΄μ
μ 보μ₯ν©λλ€.
μ ν λͺ©λ‘
μ μ μκ±°λ μΉμ¬μ΄νΈλ repeat()λ₯Ό μ¬μ©νμ¬ λμ μΈ μ ν λͺ©λ‘ 그리λλ₯Ό λ§λ€ μ μμ΅λλ€. νλ©΄ ν¬κΈ°μ λ°λΌ νλΉ νμλλ μ ν μλ₯Ό μ‘°μ νμ¬ λ°μ€ν¬ν±, νλΈλ¦Ώ, μ€λ§νΈν° μ¬μ©μμκ² μ΅μ μ μΌν κ²½νμ μ 곡ν μ μμ΅λλ€.
λΈλ‘κ·Έ κ²μλ¬Ό λͺ©λ‘
λΈλ‘κ·Έλ repeat()λ₯Ό μ¬μ©νμ¬ λΈλ‘κ·Έ κ²μλ¬Ό 미리보기λ₯Ό νμνλ μ μ°ν λ μ΄μμμ λ§λ€ μ μμ΅λλ€. νλ©΄ ν¬κΈ°μ λ°λΌ νλΉ νμλλ κ²μλ¬Ό μλ₯Ό μ‘°μ νμ¬ λ€μν μ₯μΉμμ μ½ν
μΈ μ μ½κ² μ κ·Όνκ³ μ½μ μ μλλ‘ λ³΄μ₯ν©λλ€.
λμ보λ λ μ΄μμ
λμ보λλ repeat()λ₯Ό μ¬μ©νμ¬ μμ ―μ νμνλ λμ λ μ΄μμμ λ§λ€ μ μμ΅λλ€. νλ©΄ ν¬κΈ°μ λ°λΌ νλΉ νμλλ μμ ― μλ₯Ό μ‘°μ νμ¬ μ£Όμ λ©νΈλ¦ λ° λ°μ΄ν°μ λν μ΅μ μ κ°μλ₯Ό μ 곡ν μ μμ΅λλ€.
repeat() ν¨μ μ¬μ©μ μν λͺ¨λ² μ¬λ‘
repeat() ν¨μλ₯Ό ν¨κ³Όμ μΌλ‘ μ¬μ©νλ €λ©΄ λ€μ λͺ¨λ² μ¬λ‘λ₯Ό κ³ λ €νμμμ€.
- μ μ°ν νΈλμ
minmax()μ¬μ©:minmax()ν¨μλ₯Ό μ¬μ©νλ©΄ 그리λ νΈλμ μ΅μ λ° μ΅λ ν¬κΈ°λ₯Ό μ μνμ¬ μ μ°μ±κ³Ό μ μ΄ μ¬μ΄μ κ· νμ μ 곡ν μ μμ΅λλ€. auto-fitλ°auto-fillμ μ€νκ² κ³ λ €: νΉμ λ μ΄μμ μꡬ μ¬νμ λ°λΌ μ μ ν ν€μλλ₯Ό μ ννμμμ€.auto-fitμ μ¬μ© κ°λ₯ν 곡κ°μ μ΅λν νμ©νλ €λ λ°μν λ μ΄μμμ μ΄μμ μ΄λ©°,auto-fillμ μΌκ΄λ 그리λ ꡬ쑰λ₯Ό μ μ§νλ λ° μ μ©ν©λλ€.- μ₯μΉλ³ μ‘°μ μ μν΄ λ―Έλμ΄ μΏΌλ¦¬ μ¬μ©: λ―Έλμ΄ μΏΌλ¦¬λ₯Ό μ¬μ©νλ©΄ νλ©΄ ν¬κΈ°μ λ°λΌ μ΄ μ λλ νΈλ ν¬κΈ°λ₯Ό μ‘°μ νμ¬ λ€μν μ₯μΉμ λ§κ² λ μ΄μμμ μ΅μ νν μ μμ΅λλ€.
- λ€μν μ₯μΉμμ λ μ΄μμ ν μ€νΈ: λ μ΄μμμ΄ λ°μνμ΄κ³ μκ°μ μΌλ‘ λ§€λ ₯μ μΈμ§ νμΈνκΈ° μν΄ νμ λ€μν μ₯μΉμμ ν μ€νΈνμμμ€.
- μ€λλ λΈλΌμ°μ λ₯Ό μν λ체 μ루μ
μ 곡: CSS Gridλ λ리 μ§μλμ§λ§, μΌλΆ μ€λλ λΈλΌμ°μ λ
repeat()ν¨μλ₯Ό μμ ν μ§μνμ§ μμ μ μμ΅λλ€. μ΄λ¬ν λΈλΌμ°μ λ₯Ό μν΄ float λλ λ€λ₯Έ λ μ΄μμ κΈ°μ μ μ¬μ©νλ κ²κ³Ό κ°μ λ체 μ루μ μ μ 곡νλ κ²μ κ³ λ €νμμμ€.
μ κ·Όμ± κ³ λ € μ¬ν
CSS Gridλ μ£Όλ‘ μκ°μ λ μ΄μμμ μ€μ μ λμ§λ§, 그리λ λ μ΄μμμ ꡬνν λ μ κ·Όμ±μ κ³ λ €νλ κ²μ΄ μ€μν©λλ€. λ€μμ λͺ κ°μ§ ν΅μ¬ μ¬νμ λλ€.
- λ Όλ¦¬μ μμ€ μμ: CSS μμ΄λ μ½ν μΈ μ μμ€ μμκ° μλ―Έ μλλ‘ λ³΄μ₯νμΈμ. μ€ν¬λ¦° 리λμ CSSλ₯Ό λΉνμ±ννλ μ¬μ©μλ HTML μμ€ μμμ μμ‘΄ν©λλ€. CSS Gridλ₯Ό μ¬μ©νμ¬ μμλ₯Ό μκ°μ μΌλ‘ μ¬λ°°μ΄νλ, λ Όλ¦¬μ μμ€ μμλ₯Ό ν¬μνμ§ λ§μμμ€.
- ν€λ³΄λ νμ: ν€λ³΄λ νμμ΄ μμλλ‘ μλνλμ§ νμΈνμΈμ. CSS Grid μ체λ ν€λ³΄λ νμμ λ³Έμ§μ μΌλ‘ μν₯μ λ―ΈμΉμ§ μμ§λ§, 볡μ‘ν λ μ΄μμμ λλλ‘ νμ λ¬Έμ λ₯Ό μΌκΈ°ν μ μμ΅λλ€. Tab ν€λ₯Ό μ¬μ©νμ¬ μ² μ ν ν μ€νΈνμΈμ.
- μλ§¨ν± HTML: μλ§¨ν± HTML μμλ₯Ό μ μ νκ² μ¬μ©νμΈμ. μλ₯Ό λ€μ΄, νμ λ©λ΄μλ
<nav>λ₯Ό, κΈ°μ¬μλ<article>λ±μ μ¬μ©νμΈμ. μ΄λ μ€ν¬λ¦° 리λκ° μ½ν μΈ μ ꡬ쑰μ λͺ©μ μ μ΄ν΄νλ λ° λμμ΄ λ©λλ€. - μΆ©λΆν λλΉ: ν μ€νΈμ λ°°κ²½μ κ°μ μΆ©λΆν μμ λλΉλ₯Ό 보μ₯νμΈμ. μ΄λ μ μλ ₯ μ¬μ©μμκ² νΉν μ€μν©λλ€.
- λ°μν λμμΈ: λ€μν νλ©΄ ν¬κΈ° λ° νλ/μΆμ μμ€μ μ μνλ λ°μν 그리λ λ μ΄μμμ λ€μν μꡬλ₯Ό κ°μ§ μ¬μ©μμ μ κ·Όμ±μ ν₯μμν΅λλ€.
μΌλ°μ μΈ λ¬Έμ ν΄κ²°
CSS Grid λ° repeat() ν¨μλ₯Ό μ¬μ©ν λ λͺ κ°μ§ μΌλ°μ μΈ λ¬Έμ κ° λ°μν μ μμ΅λλ€. λ€μμ λͺ κ°μ§ λ¬Έμ ν΄κ²° νμ
λλ€.
- 그리λ νλͺ©μ΄ 곡κ°μ μ±μ°μ§ μμ: 그리λ νλͺ©μ΄ μ¬μ© κ°λ₯ν 곡κ°μ μ±μ°μ§ μμΌλ©΄
grid-template-columnsλ°grid-template-rowsμμ±μ νμΈνμμμ€. μ μ ν λ¨μ(μ:fr,%,auto)λ₯Ό μ¬μ©νκ³ μμΌλ©° νΈλ ν¬κΈ°κ° μ¬λ°λ₯΄κ² μ μλμλμ§ νμΈνμμμ€. - μ΄μ΄ μ¬λ°λ₯΄κ² μ€ λ°κΏλμ§ μμ: μ΄μ΄ μ¬λ°λ₯΄κ² μ€ λ°κΏλμ§ μμΌλ©΄
minmax()ν¨μμauto-fitλλauto-fillν€μλλ₯Ό λ€μ νμΈνμμμ€. μ΅μ μ΄ λλΉκ° μ½ν μΈ μ μ μ νκ³ κ·Έλ¦¬λκ° μ¬μ© κ°λ₯ν 곡κ°μ λ°λΌ μ΄ μλ₯Ό μ‘°μ ν μ μλμ§ νμΈνμμμ€. - κ°κ²©μ΄ μ¬λ°λ₯΄κ² νμλμ§ μμ: κ°κ²©μ΄ μ¬λ°λ₯΄κ² νμλμ§ μμΌλ©΄ 그리λ 컨ν
μ΄λμ
grid-gap(λλ κ°λ³grid-column-gapλ°grid-row-gap) μμ±μ μ¬μ©νκ³ μλμ§ νμΈνμμμ€. λν κ°κ²© μ€μ μ μ¬μ μν μ μλ μΆ©λνλ μ€νμΌμ΄ μλμ§ νμΈνμμμ€. - λ€λ₯Έ λΈλΌμ°μ μμ μμμΉ λͺ»ν λ μ΄μμ λμ: CSS Gridλ λΈλΌμ°μ μ§μμ΄ μ’μ§λ§, λ€λ₯Έ λΈλΌμ°μ μμ 그리λ λ μ΄μμμ λ λλ§νλ λ°©μμ μ½κ°μ μ°¨μ΄κ° μμ μ μμ΅λλ€. μ¬λ¬ λΈλΌμ°μ μμ λ μ΄μμμ ν μ€νΈνμ¬ νΈνμ± λ¬Έμ λ₯Ό μλ³νκ³ ν΄κ²°νμμμ€.
κ²°λ‘
CSS Grid repeat() ν¨μλ λμ μ΄κ³ λ°μν μΉ λ μ΄μμμ λ§λλ κ°λ ₯ν λꡬμ
λλ€. ꡬ문과 κΈ°λ₯μ μ΄ν΄ν¨μΌλ‘μ¨ CSSλ₯Ό ν¬κ² λ¨μννκ³ λ€μν νλ©΄ ν¬κΈ° λ° μ½ν
μΈ μμ μ μνλ λ μ΄μμμ λ§λ€ μ μμ΅λλ€. μ΄λ―Έμ§ κ°€λ¬λ¦¬, μ ν λͺ©λ‘ λλ 볡μ‘ν λμ보λλ₯Ό ꡬμΆνλ repeat() ν¨μλ μ¬μ©μ κ²½νμ ν₯μμν€λ μ μ°νκ³ μκ°μ μΌλ‘ λ§€λ ₯μ μΈ λ μ΄μμμ λ§λλ λ° λμμ΄ λ μ μμ΅λλ€.
νΉν auto-fit λ° auto-fillμ μ¬μ©μ ν¬ν¨νμ¬ repeat() ν¨μλ₯Ό λ§μ€ν°νλ κ²μ νλ μΉ κ°λ°μ νμμ μ
λλ€. μ΄λ₯Ό ν΅ν΄ μκ°μ μΌλ‘ λ§€λ ₯μ μΌ λΏλ§ μλλΌ μ μ κ°λ₯νκ³ μ μ§ κ΄λ¦¬ κ°λ₯ν λ μ΄μμμ λ§λ€ μ μμ΅λλ€. CSS Gridμ repeat() ν¨μμ νμ νμ©νμ¬ μΉ λμμΈμμ μλ‘μ΄ κ°λ₯μ±μ μ΄μ΄λ³΄μΈμ.
μΆκ° νμ΅ λ° μλ£
- MDN μΉ λ¬Έμ: https://developer.mozilla.org/en-US/docs/Web/CSS/repeat
- CSS-Tricks: https://css-tricks.com/almanac/functions/repeat/
- Grid by Example: https://gridbyexample.com/